package Capitulo07.Classes;


public class Person implements /*Comparator<Person>,*/Comparable<Person>{

	private String nome;
	private Integer idade;


	public Person() {
		super();
	}

	public Person(String nome, Integer idade) {
		super();
		this.nome = nome;
		this.idade = idade;
	}

	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public int getIdade() {
		return idade;
	}
	public void setIdade(Integer idade) {
		this.idade = idade;
	}

	@Override
	public String toString() {
		return "Person [nome=" + nome + ", idade=" + idade + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((idade == null) ? 0 : idade.hashCode());
		result = prime * result + ((nome == null) ? 0 : nome.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Person other = (Person) obj;
		if (idade == null) {
			if (other.idade != null)
				return false;
		} else if (!idade.equals(other.idade))
			return false;
		if (nome == null) {
			if (other.nome != null)
				return false;
		} else if (!nome.equals(other.nome))
			return false;
		return true;
	}

	//Metodo implementado da interface comparable
	public int compareTo(Person o) {
		return nome.compareTo(o.getNome());
	}

	//Metodo implementado da interface comparator
	public int compare(Person arg0, Person arg1) {
		return arg0.getNome().compareTo(arg1.getNome());
	}

}
